package top.gokzzz.mock.entity.criteria;

import top.gokzzz.jpa.annotation.Query;
import top.gokzzz.mock.entity.Staff;

import java.time.LocalDate;
import java.util.List;

public class StaffCriteria {

    private String id;

    @Query(type = Query.Type.LIKE)
    private String code;

    @Query
    private Staff.Gender gender;

    @Query(type = Query.Type.NOT_EQUAL,path = "gender")
    private Staff.Gender notGender;

    @Query(type = Query.Type.GREATER_THAN, path = "birthday")
    private LocalDate birthdayStart;

    @Query(type = Query.Type.LESS_THAN, path = "birthday")
    private LocalDate birthdayEnd;

    @Query(type = Query.Type.IN, path = "department.id")
    private List<String> departmentIds;

    @Query(type = Query.Type.NOT_IN, path = "department.id")
    private List<String> notDepartmentIds;

    @Query(type = Query.Type.IS_NULL)
    private Boolean mobile = Boolean.TRUE;

    @Query(type = Query.Type.IS_NOT_NULL)
    private Boolean email = Boolean.TRUE;


    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public Staff.Gender getGender() {
        return gender;
    }

    public void setGender(Staff.Gender gender) {
        this.gender = gender;
    }

    public List<String> getDepartmentIds() {
        return departmentIds;
    }

    public void setDepartmentIds(List<String> departmentIds) {
        this.departmentIds = departmentIds;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public LocalDate getBirthdayStart() {
        return birthdayStart;
    }

    public void setBirthdayStart(LocalDate birthdayStart) {
        this.birthdayStart = birthdayStart;
    }

    public LocalDate getBirthdayEnd() {
        return birthdayEnd;
    }

    public void setBirthdayEnd(LocalDate birthdayEnd) {
        this.birthdayEnd = birthdayEnd;
    }

    public Boolean getMobile() {
        return mobile;
    }

    public void setMobile(Boolean mobile) {
        this.mobile = mobile;
    }

    public Boolean getEmail() {
        return email;
    }

    public void setEmail(Boolean email) {
        this.email = email;
    }

    public Staff.Gender getNotGender() {
        return notGender;
    }

    public void setNotGender(Staff.Gender notGender) {
        this.notGender = notGender;
    }

    public List<String> getNotDepartmentIds() {
        return notDepartmentIds;
    }

    public void setNotDepartmentIds(List<String> notDepartmentIds) {
        this.notDepartmentIds = notDepartmentIds;
    }
}
